﻿Namespace Compras


    Public Class frmOrdenCompraPopup

        Public Property OrdenCompraID As Integer = -1
        Public Property Productos As Farmacia.Entity.Kardex.OrdenCompraProductoCol


        Private Sub btn_Grabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Grabar.Click
            grabar()

        End Sub

        Public Sub Grabar()

            Dim obj As New Farmacia.Business.Kardex.OrdenCompra

            OrdenCompraID = obj.Grabar(OrdenCompraID, _
                        Me.cbbPRoveedor.SelectedValue, _
                        Me.cbbTipoDocumento.SelectedValue, _
                        Me.txt_documento.Text, _
                         Me.cbbAlmacen.selectedvalue, _
                        Me.dtp_orden.Value.ToFileTime, _
                        Me.txt_subtotal.Text, _
                        Me.txt_igv_porcentaje.Text, _
                        Me.txt_igv.Text, _
                        Me.txt_total.Text, _
                        Me.txt_observacion.Text, _
                         Vichama.Configurations.Usuario.Codigo)

            If OrdenCompraID <= 0 Then
                Vichama.Configurations.Aplication.MessageBox.MensajeError("Hubo un problema en el registro de la Orden")
            End If


        End Sub

        Public Sub LoadParameter()
            CargarPRoveedor()
            CargarTipoDocumento()
            CargarAlmacen()



        End Sub
        Public Sub CargarTipoDocumento()
            Dim obj As New Farmacia.Business.Ventas.ComprobanteTipo
            Dim oCol As Farmacia.Entity.Ventas.ComprobanteTipoCol
            oCol = obj.Combo(True, "Todos")

            Me.cbbTipoDocumento.DisplayMember = "Nombre"
            Me.cbbTipoDocumento.ValueMember = "ComprobanteTipoId"
            Me.cbbTipoDocumento.DataSource = oCol
        End Sub
        Public Sub CargarPRoveedor()
            Dim obj As New Farmacia.Business.Kardex.Proveedor
            Dim oCol As Farmacia.Entity.Kardex.ProveedorCol
            oCol = obj.Combo(True, "Todos")

            Me.cbbProveedor.DisplayMember = "Nombre"
            Me.cbbProveedor.ValueMember = "ProveedorId"
            Me.cbbProveedor.DataSource = oCol

        End Sub
        Public Sub CargarAlmacen()
            Dim obj As New Farmacia.Business.Kardex.Almacen
            Dim oCol As Farmacia.Entity.Kardex.AlmacenCol
            oCol = obj.Combo(True, "Todos")

            Me.cbbPRoveedor.DisplayMember = "Nombre"
            Me.cbbPRoveedor.ValueMember = "AlmacenId"
            Me.cbbPRoveedor.DataSource = oCol


        End Sub

        Private Sub frmOrdenCompraPopup_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            LoadParameter()

            If OrdenCompraID > 0 Then
                'CargarDatos
                Dim ent As Farmacia.Entity.Kardex.OrdenCompra
                Dim obj As New Farmacia.Business.Kardex.OrdenCompra
                ent = obj.Listar(OrdenCompraID)

                Me.cbbPRoveedor.SelectedValue = ent.ProveedorId
                Me.cbbTipoDocumento.SelectedValue = ent.TipoDocumento
                Me.txt_documento.Text = ent.NumeroDocumento
                Me.dtp_orden.Value = ent.FechaStr
                Me.txt_observacion.Text = ent.Descripcion


                Me.txt_igv_porcentaje.Text = ent.IGV_PORCENTAJE
                Me.txt_igv.Text = ent.IGV
                Me.txt_subtotal.Text = ent.SubTotal
                Me.txt_total.Text = ent.Total

            Else
                'Limpiar

            End If
        End Sub

        Private Sub btn_add_prod_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_add_prod.Click
            If OrdenCompraID <= 0 Then
                Vichama.Configurations.Aplication.MessageBox.MensajeExclamation("Primero debe registrar los datos de la Orden de Compra!")
                Exit Sub
            End If

            Dim decCantidad As Decimal = 0
            Dim decPRecio As Decimal = 0


            If Productos Is Nothing Then
                Productos = New Farmacia.Entity.Kardex.OrdenCompraProductoCol
            End If

            Dim frm As New Producto.frmProductoSeleccionarProductoPopup
            Dim entProducto As Farmacia.Entity.Producto.Producto

            If frm.ShowDialog = Windows.Forms.DialogResult.OK Then
                entProducto = frm.Producto
            Else

                Vichama.Configurations.Aplication.MessageBox.MensajeExclamation("Se ha cancelado la operación")
                Exit Sub
            End If


            Dim frmConfirmacion As New FrmOrdenCompraProductoConfirmacionPopup
            frmConfirmacion.ProductoID = entProducto.ProductoId
            If frmConfirmacion.ShowDialog = Windows.Forms.DialogResult.OK Then
                decCantidad = frmConfirmacion.CAntidad
                decCantidad = frmConfirmacion.Precio
            Else
                Vichama.Configurations.Aplication.MessageBox.MensajeExclamation("Se ha cancelado la operación")
                Exit Sub
            End If





            'transformar Producto en OrdencOmpraProducto
            Dim entOrdenCompraProducto As Farmacia.Entity.Kardex.OrdenCompraProducto
            entOrdenCompraProducto = ProductoTOOrdenCompraProducto(OrdenCompraID, entProducto, decCantidad, decPRecio)

            Dim obj As New Farmacia.Business.Kardex.OrdenCompraProducto
            Dim intProductoDetalle As Integer = -1

            With entOrdenCompraProducto
                intProductoDetalle = obj.Grabar(entOrdenCompraProducto, Vichama.Configurations.Usuario.Codigo)


                If intProductoDetalle > 0 Then
                    Productos.Add(entOrdenCompraProducto)
                    Me.dgw_productos.DataSource = Productos

                    Me.txt_subtotal.Text = Me.txt_subtotal.Text + entOrdenCompraProducto.SubTotal
                    Me.txt_total.Text = Me.txt_total.Text + entOrdenCompraProducto.Total


                Else
                    Vichama.Configurations.Aplication.MessageBox.MensajeExclamation("Se ha cancelado la operación")
                    Exit Sub
                End If
            End With






        End Sub

        Public Function ProductoTOOrdenCompraProducto(ByVal vordencompraid As Integer, _
                                                      ByVal vproducto As Farmacia.Entity.Producto.Producto, _
                                                      ByVal deccantidad As Decimal, _
                                                      ByVal decprecio As Decimal) As Farmacia.Entity.Kardex.OrdenCompraProducto
            Dim ent As New Farmacia.Entity.Kardex.OrdenCompraProducto(vordencompraid, _
                                                                       vproducto.ProductoId, _
                                                                       vproducto.Nombre, _
                                                                       deccantidad, _
                                                                        decprecio, _
                                                                            deccantidad * decprecio, _
                                                                          0, _
                                                                           deccantidad * decprecio)

            Return ent

        End Function


        Private Sub frmOrdenCompraPopup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub

        Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter

        End Sub
    End Class
End Namespace